home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / R-Shows / (c)sds.d64 / sprites tut-2.64 (.txt) < prev   
Commodore BASIC  |  2007-02-04  |  8KB  |  219 lines

  1. 0 REM" P.J.PONZO*83*WATERLOO/ONTARIO
  2. 1 [143]"
  3. 1000 GOSUB60000:PRINTCHR$(142):PRINT"[147]               SPRITES-2"
  4. 1001 PRINT"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]"
  5. 1002 PRINT"[221]           MORE ON SPRITES          [146] [221]":MS$="PONZOTUTOR"
  6. 1003 PRINT"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189][144]":GOSUB63100:MS$=" WELCOME!"
  7. 1005 GOSUB63100:GOSUB10000
  8. 1010 V=53248:POKE2040,13:POKEV+1,150:POKEV,150:POKEV+39,1:POKEV+29,1:POKEV+23,1
  9. 1020 POKEV+39,6:POKEV+21,1:PRINT"THIS IS A BLUE SPRITE.":FORT=1TO900:NEXT
  10. 1030 PRINT"A 'SORT-OF' LUNAR LANDER.":FORT=1TO1000:NEXT
  11. 1040 PRINT"LET'S LOOK AT IT MORE CLOSELY."
  12. 1050 MS$="LET'S LOOK":GOSUB63100:GOSUB63000:POKEV+21,0
  13. 1060 PRINT"[147]WE'LL DISPLAY THE PIXELS THAT MAKE"
  14. 1070 PRINT"UP THIS SPRITE...":GOSUB63000
  15. 1075 POKEV,255:POKEV+1,180:POKEV+21,1
  16. 1080 PRINT"[147]":GOSUB10200
  17. 1085 FORI=1TO5
  18. 1086 PRINTDN$"NOW, IN BINARY             ":FORT=1TO50:NEXT
  19. 1087 PRINTDN$"                           ":FORT=1TO50:NEXT
  20. 1088 NEXT:GOSUB10400
  21. 1090 FORI=1TO5
  22. 1091 PRINTDN$"...AND IN BIT-PAIRS        ":FORT=1TO50:NEXT
  23. 1092 PRINTDN$"                           ":FORT=1TO50:NEXT
  24. 1093 NEXT
  25. 1100 GOSUB10500:GOSUB63000
  26. 1110 PRINTPS$"NOW WE'LL   "
  27. 1120 PRINTPS$"CHOOSE 4    "
  28. 1130 PRINTPS$"COLOURS AND "
  29. 1140 PRINTPS$"SET EACH    "
  30. 1150 PRINTPS$"PIXEL PAIR  "
  31. 1160 PRINTPS$"TO A COLOUR "
  32. 1170 PRINTPS$"ACCORDING TO"
  33. 1180 PRINTPS$"00[146]=COLOUR #0"
  34. 1190 PRINTPS$"01[146]=COLOUR #1"
  35. 1200 PRINTPS$"10[146]=COLOUR #2"
  36. 1210 PRINTPS$"11[146]=COLOUR #3":GOSUB63000
  37. 1215 GOSUB10600:FORI=1TO5:PRINTDN$"BASE OF VIDEO CHIP":FORT=1TO50:NEXT
  38. 1216 PRINTDN$"BASE OF VIDEO CHIP":FORT=1TO50:NEXT:NEXT
  39. 1220 PRINTPS$"V=53248:VIDEO":V=53248
  40. 1225 GOSUB63000:PRINTDN$"[144]SET COLOUR #0=1(WHITE)"
  41. 1230 PRINTPS$"POKEV+33,1 ":POKEV+33,1
  42. 1240 GOSUB63000:PRINTDN$"V+33=53281(BACKGROUND)"
  43. 1245 GOSUB63000:PRINTDN$"SET COLOUR #1=0(BLACK)"
  44. 1250 PRINTPS$"POKEV+37,0 ":POKEV+37,0
  45. 1260 GOSUB63000:PRINTDN$"V+37=SPRITE MULTI-COLOUR REG'R #0"
  46. 1265 GOSUB63000:PRINTDN$"SET COLOUR #2=2(RED)"
  47. 1270 PRINTPS$"POKEV+39,2 ":GOSUB63000:POKEV+39,2
  48. 1280 GOSUB63000:PRINTDN$"V+39=COLOUR REGISTER FOR SPRITE #0"
  49. 1285 GOSUB63000:PRINTDN$"SET COLOUR #3=3(CYAN)"
  50. 1290 PRINTPS$"POKEV+38,3 ":POKEV+38,3
  51. 1300 GOSUB63000:PRINTDN$"V+38=SPRITE MULTI-COLOUR REG'R #1" :GOSUB63000
  52. 1305 PRINTDN$"PLEASE NOTE!!!":GOSUB63000
  53. 1310 PRINTDN$"POKEV+39,2[146] CHANGED SPRITE TO RED":GOSUB63000
  54. 1320 PRINTDN$"& POKEV+33,1[146] CHANGED BACKGROUND":GOSUB63000
  55. 1330 FORI=1TO5
  56. 1331 PRINTDN$"BUT WHERE'S THE BLACK AND CYAN??":FORT=1TO50:NEXT
  57. 1332 PRINTDN$"                                ":FORT=1TO50:NEXT
  58. 1333 NEXT
  59. 1340 MS$=" WATCH!!":PRINT"[147]":POKEV+21,0:GOSUB63100:PRINT"[147]":GOSUB10700
  60. 1350 GOSUB60000:MS$="HOW TO DO?":GOSUB63100
  61. 1360 PRINT"[147]THE 00[146] COLOUR WAS 'BACKGROUND'"
  62. 1370 PRINT"(AND SHARED BY ALL VISIBLE SPRITES)"
  63. 1380 PRINT"AND POKE V+33[146] CHANGES THIS COLOUR."
  64. 1390 PRINT"THE 10[146] COLOUR WAS THE 'SPRITE COLOUR'"
  65. 1400 PRINT"(AND CAN BE DIFFERENT FOR EACH SPRITE)"
  66. 1410 PRINT"AND POKE V+39+N[146] CHANGES THIS COLOUR"
  67. 1420 PRINT"(FOR SPRITE #N, WITH N=0 TO 7)."
  68. 1430 MS$="01[146] & 11[146]???":GOSUB63100:GOSUB63000
  69. 1440 PRINT"[147]THEN, IN REGISTERS V+37[146] & V+38[146]"
  70. 1450 PRINT"ARE THE SPRITE MULTI-COLOURS[146]!!"
  71. 1460 PRINT"POKE V+37[146] AND POKE V+38[146] WITH THE"
  72. 1470 PRINT"COLOURS YOU WANT FOR THE 01[146] AND 11"
  73. 1480 PRINT"BIT PAIRS!!":MS$="ALL SHARED":GOSUB63100:GOSUB63000
  74. 1490 PRINT"[147]OK..OUR BACKGROUND CHANGES AND SO DOES"
  75. 1500 PRINT"OUR 'SORT-OF' SPRITE."
  76. 1510 PRINT"NOW TO ENABLE[146] MULTI-COLOUR FOR"
  77. 1520 PRINT"SPRITE #N, WE: POKE V+28,2^N[146]!!":MS$="ENABLE #N":GOSUB63100:GOSUB63000
  78. 1530 PRINT"[147]STILL NO CHANGE IN OUR SPRITE!":GOSUB63000
  79. 1540 PRINT"[147]WE MUST PUT THE C64 VIDEO CHIP INTO:"
  80. 1550 PRINT"MULTI-COLOUR MODE":PRINT"POKE V+22,PEEK(V+22)OR16"
  81. 1560 PRINT"SETTING BIT 4[146]=M[146]ULTI C[146]OLOUR M[146]ODE BIT"
  82. 1570 PRINT"THEN THOSE SPRITES WHICH WERE"
  83. 1580 PRINT"MULTI-COLOUR ENABLED[146] (POKEV+28,2^N)"
  84. 1590 PRINT"BECOME 'MULTI-COLOURED'!!":MS$="BEAUTIFUL!":GOSUB63100:GOSUB63000
  85. 1600 PRINT"[147]NOW YOU[157][157][157][184][184][184][145] CHANGE THE COLOURS"
  86. 1610 PRINT"OF OUT LUNAR LANDER!"
  87. 1620 PRINT"JUST HIT 0[146] OR 1[146] OR 2[146] OR 3[146] TO"
  88. 1630 PRINT"CHANGE COLOUR #0,#1,#2 OR #3."
  89. 1640 PRINT"...AND HIT 'Q' TO QUIT!":MS$=" READY?":GOSUB63100:GOSUB63000
  90. 1645 PRINT"[147]":V=53248:POKEV+22,216:GOSUB10700
  91. 1650 DIM CM$(15):DD$="":K=1:D0$=DD$+BL$+DD$:PRINT"";
  92. 1651 CM$(1)="VIDEO CHIP BASE ADDRESS"
  93. 1652 CM$(2)="PUT 'SHAPE' INTO A BLOCK"
  94. 1653 CM$(3)="POINT CHIP TO BLOCK"
  95. 1654 CM$(4)="SET 00[146] COLOUR (BACKGROUND)"
  96. 1655 CM$(5)="SET 01[146] COLOUR (COLOUR REG'R #0)"
  97. 1656 CM$(6)="SET 10[146] COLOUR (SPRITE COLOUR)"
  98. 1657 CM$(7)="SET 11[146] COLOUR (COLOUR REG'R #1)"
  99. 1658 CM$(8)="GIVE SPRITE #N AN X-POSITION"
  100. 1659 CM$(9)="GIVE SPRITE #N A Y-POSITION"
  101. 1660 CM$(10)="EXPAND IN Y-DIRECTION"
  102. 1661 CM$(11)="EXPAND IN X-DIRECTION"
  103. 1662 CM$(12)="PUT CHIP[146] INTO MULTI-COLOUR MODE"
  104. 1663 CM$(13)="SPRITE[146] #N INTO MULTI-COLOUR MODE"
  105. 1700 GOSUB60000:PRINT"[147]REVIEW:":PRINT"[184][184][184][184][184][184]"
  106. 1710 PRINT"V=53248                          ":GOSUB10900
  107. 1720 PRINT"FORI=0TO62:READX:POKE832+I,X:NEXT":GOSUB10900
  108. 1730 PRINT"POKE2040+N,13                    ":GOSUB10900
  109. 1740 PRINT"POKEV+33,C0                      ":GOSUB10900
  110. 1750 PRINT"POKEV+37,C1                      ":GOSUB10900
  111. 1760 PRINT"POKEV+39+N,C2                    ":GOSUB10900
  112. 1770 PRINT"POKEV+38,C3                      ":GOSUB10900
  113. 1780 PRINT"POKEV+2*N,X                      ":GOSUB10900
  114. 1790 PRINT"POKEV+2*N+1,Y                    ":GOSUB10900
  115. 1800 PRINT"POKEV+23,1                       ":GOSUB10900
  116. 1810 PRINT"POKEV+29,1                       ":GOSUB10900
  117. 1820 PRINT"POKEV+22,PEEK(V+22)OR16          ":GOSUB10900
  118. 1830 PRINT"POKEV+28,2^N                     ":GOSUB10900
  119. 9999 MS$="AU REVOIR":PRINT"[147]":GOSUB63100:END
  120. 10000 REM LANDER SPRITE
  121. 10005 FORI=0TO62:READX:POKE832+I,X:NEXT:RETURN
  122. 10010 DATA0,119,64,1,189,208,7,191,116
  123. 10011 DATA30,170,100,30,170,100,30,170,100
  124. 10012 DATA21,21,84,21,21,84,30,170,100
  125. 10013 DATA30,170,100,27,187,116,27,187,116
  126. 10014 DATA27,187,116,27,163,116,27,163,116
  127. 10015 DATA5,85,80,7,227,80,23,35,84
  128. 10016 DATA17,97,68,84,85,21,84,0,21
  129. 10100 REM SPRITE BORDER
  130. 10105 PRINT"            111111111122222"
  131. 10110 PRINT"   123456789012345678901234"
  132. 10120 FORI=1TO21:I$=STR$(I):I$=RIGHT$(" "+I$,2):PRINT""I$:NEXT:RETURN
  133. 10200 REM DISPLAY PIXELS
  134. 10205 PRINT"":FORI=0TO62STEP3:X=PEEK(832+I)
  135. 10210 FORJ=7TO0STEP-1
  136. 10220 IFXANDP(J)THENPRINTS$(1);:GOTO10240
  137. 10230 PRINTS$(0);
  138. 10240 NEXT:X=PEEK(832+I+1)
  139. 10250 FORJ=7TO0STEP-1
  140. 10260 IFXANDP(J)THENPRINTS$(1);:GOTO10280
  141. 10270 PRINTS$(0);
  142. 10280 NEXT:X=PEEK(832+I+2)
  143. 10290 FORJ=7TO0STEP-1
  144. 10300 IFXANDP(J)THENPRINTS$(1);:GOTO10320
  145. 10310 PRINTS$(0);
  146. 10320 NEXT:PRINT:NEXT:GOSUB10100:RETURN
  147. 10400 REM SPRITE IN BINARY
  148. 10405 PRINT"";
  149. 10410 FORI=0TO20:FORJ=3TO26:IFPEEK(1104+40*I+J)=160THENPRINT"1";:GOTO10430
  150. 10420 PRINT"0";:
  151. 10430 NEXT:PRINT:PRINT"";:NEXT:RETURN
  152. 10500 REM SPRITE IN BIT PAIRS
  153. 10505 PRINT"";:K=0:A=1104:B=0:C=20:D=3:E=26:F=4:G=49:H=40:A$="1":B$="0"
  154. 10510 FORI=BTOC:FORJ=DTOE:IFPEEK(A+H*I+J)=GTHENPRINTR$(K)A$;:GOTO10530
  155. 10520 PRINTR$(K)B$;
  156. 10530 K=K+1:IFK=FTHENK=B
  157. 10540 NEXT:PRINT:K=B:PRINT"";:NEXT:RETURN
  158. 10600 REM CLEAR
  159. 10610 FORI=1TO20:PRINTPS$"[145]";:FORJ=1TOI:PRINT"";:NEXT
  160. 10620 PRINT"            ":NEXT:RETURN
  161. 10700 REM MOVE SPRITE
  162. 10705 PRINT"[147][144]HIT 'Q' TO QUIT":POKE53281,1
  163. 10710 V=53248:POKEV+28,1:POKEV+21,1:POKEV+29,O:POKEV+23,0:F=0:G=255
  164. 10720 FORT=FTOG:X=T:Y=T:POKEV,X:POKEV+1,Y:GETA$:IFA$="Q"THEN10795
  165. 10725 GOSUB10800:NEXT
  166. 10730 POKEV+29,1:POKEV+23,0
  167. 10740 FORT=GTOFSTEP-1:X=T:Y=T:POKEV,X:POKEV+1,Y:GETA$:IFA$="Q"THEN10795
  168. 10745 GOSUB10800:NEXT
  169. 10750 POKEV+29,0:POKEV+23,1
  170. 10760 FORT=FTOG:X=T:Y=G-T:POKEV,X:POKEV+1,Y:GETA$:IFA$="Q"THEN10795
  171. 10765 GOSUB10800:NEXT
  172. 10770 POKEV+29,1:POKEV+23,1
  173. 10780 FORT=GTOFSTEP-1:X=T:Y=G-T:POKEV,X:POKEV+1,Y:GETA$:IFA$="Q"THEN10795
  174. 10790 GOSUB10800:NEXT:GOTO10710
  175. 10792 GOSUB10800:NEXT
  176. 10795 POKEV+21,0:RETURN
  177. 10800 IFA$=""THENRETURN
  178. 10810 A=VAL(A$):CC=CC+1:IFCC>15THENCC=0
  179. 10820 ON A+1 GOTO10830,10840,10850,10860
  180. 10825 RETURN
  181. 10830 POKEV+33,CC:RETURN
  182. 10840 POKEV+37,CC:RETURN
  183. 10850 POKEV+39,CC:RETURN
  184. 10860 POKEV+38,CC:RETURN
  185. 10900 REM COMMENT
  186. 10905 PRINTD0$CM$(K):GOSUB63000:PRINTLEFT$(DD$,K+3):K=K+1:RETURN
  187. 60000 REM INITIALIZE
  188. 60001 BT$="":FORI=1TO24:BT$=BT$+"":NEXT:PRINTCHR$(142)
  189. 60002 PT$="[176][192][192][192][192][192][192][192][192][192][192][174][157][157][157][157][157][157][157][157][157][157][157][157][221][221][157][157][157][157][157][157][157][157][157][157][157][157][173][178][192][192][192][192][192][192][192][192][178][189]"
  190. 60003 PT$=PT$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][206][163][163][163][163][163][163][163][163][163][163][163][163][205][157][157][157][157][157][157][157][157][157][157][157][157][157][157][165]============[144][167]"
  191. 60004 PT$=PT$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][157][208][207][163][163][163][163][163][163][163][163][163][163][208][207][145][145][145][145][157][157][157][157][157][157][157][157][157][157][157][157]"
  192. 60005 PT$=BT$+"[145][145][145][145][145][145]"+PT$
  193. 60007 ML$=""
  194. 60008 WD=40:CRT=1024
  195. 60009 POKE53281,15:POKE53280,12:PRINT"[144]"
  196. 60010 V=53248:FORI=0TO16:POKEV+I,0:NEXT
  197. 60011 POKEV+23,0:POKEV+29,0:FORI=0TO7:POKEV+39+I,0:NEXT:POKEV+22,200:POKEV+28,0
  198. 60020 S$(0)=" ":S$(1)=" [146]"
  199. 60030 DN$=""
  200. 60035 BL$="                                       ":DN$=DN$+BL$+DN$
  201. 60040 PS$=""
  202. 60045 R$(0)="[146]":R$(1)="[146]":R$(2)="":R$(3)=""
  203. 60100 FORJ=0TO7:P(J)=2^J:NEXT
  204. 60200 RETURN
  205. 62000 GOSUB63000
  206. 62001 PRINTSD$CL$:PRINTCL$:PRINTCL$
  207. 62003 RETURN
  208. 63000 PRINT"[144]HIT RETURN[146] TO CONTINUE";
  209. 63001 GETA$:IFA$<>""THEN63001
  210. 63002 GETA$:IFA$=""THEN63002
  211. 63003 RETURN
  212. 63100 FORT=1TO5:PRINTPT$MS$;
  213. 63101 PRINTPT$"          ";
  214. 63102 PRINTPT$MS$;:NEXT
  215. 63103 PRINT"[144]":RETURN
  216. 63900 SD$="":CL$="[146]                                      [146]"
  217. 63901 SR$=""
  218. 63902 RETURN
  219.